package com.money.tracker.generator.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.money.tracker.common.entity.rsp.IResponse;
import com.money.tracker.generator.entity.GenTable;
import com.money.tracker.generator.entity.GenTableColumn;
import com.money.tracker.generator.entity.req.GenTableReq;
import com.money.tracker.generator.entity.rsp.GenTableRsp;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 代码生成业务表 服务类
 * </p>
 *
 * @author zhangshuai
 * @since 2024-10-08
 */
public interface IGenTableService extends IService<GenTable> {

    void importTable(String tables);

    /**
     *
     * 分页查询
     * @param req
     * @return {@link List}<{@link GenTable}>
     */
    Page<GenTableRsp> pageTableList(GenTableReq req);

    Page<GenTableRsp> dbPageList(GenTableReq req);

    void remove(Long tableId);

    GenTableRsp getInfo(String tableId);

    /**
     *
     * 重新同步数据库
     * @param tableId
     */
    void syncDb(Long tableId);

    /**
     *
     * 预览代码
     * @param tableId
     * @return {@link IResponse}<{@link ?}>
     */
    Map<String, String> preview(String tableId);

    /**
     * 修改保存代码生成业务
     *
     @param newGenTable
     @param newColumns
     */
    void update(GenTable newGenTable, List<GenTableColumn> newColumns);
}
